home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / mint / mgr / lib / term.h < prev    next >
C/C++ Source or Header  |  1990-09-16  |  16KB  |  553 lines

  1. /*                        Copyright (c) 1987 Bellcore
  2.  *                            All Rights Reserved
  3.  *       Permission is granted to copy or use this program, EXCEPT that it
  4.  *       may not be sold for profit, the copyright notice must be reproduced
  5.  *       on copies, and credit should be given to Bellcore where it is due.
  6.  *       BELLCORE MAKES NO WARRANTY AND ACCEPTS NO LIABILITY FOR THIS PROGRAM.
  7.  */
  8. /*    $Header: term.h,v 4.6 88/08/18 10:17:05 sau Exp $
  9.     $Source: /tmp/mgrsrc/lib/RCS/term.h,v $
  10. */
  11. static char    h_term_[] = "$Source: /tmp/mgrsrc/lib/RCS/term.h,v $$Revision: 4.6 $";
  12.  
  13. /* macros for writing to mgr terminal emulator */
  14.  
  15. #ifndef _TERM_INCL
  16. #define _TERM_INCL
  17.  
  18. #include "window.h"
  19.  
  20. #ifndef stderr
  21. #include <stdio.h>
  22. #endif
  23.  
  24. #ifndef ECHO
  25. #include <sgtty.h>
  26. #endif
  27.  
  28. #define TTYMAX        10    /* stack size for ttyset() */
  29.  
  30. #define M_FLUSH        0x1    /* autoflush output after each write */
  31. #define M_DEBUG        0x2    /* use stderr instead of /dev/tty mgr i/o */
  32. #define M_MODEOK    0x4    /* assume tty modes are always ok */
  33.  
  34. #ifndef M_DEVICEIN
  35. #define M_DEVICEIN    "/dev/tty"
  36. #endif
  37.  
  38. #ifndef M_DEVICEOUT
  39. #define M_DEVICEOUT    "/dev/tty"
  40. #endif
  41.  
  42.  
  43. #define m_flush()        fflush(m_termout)
  44.  
  45. #define BTWN(a,x,b)    \
  46.     ((x)<(a)?a:(x)>(b)?b:x)
  47. #define LIMIT(x)    BTWN(0,x,1152)
  48.  
  49. #ifndef M_NOFLUSH
  50. #define _m_flsh        ,(m_flags&M_FLUSH?m_flush():m_flags)
  51. #else
  52. #define _m_flsh
  53. #endif
  54.  
  55. /* vi-like stuff */
  56.  
  57. #define m_addline() \
  58.     (fprintf(m_termout,"%c%c",m_escchar,E_ADDLINE)_m_flsh)
  59.  
  60. #define m_addlines(n) \
  61.     (fprintf(m_termout,"%c%d%c",m_escchar,n,E_ADDLINE)_m_flsh)
  62.  
  63. #define m_addchar() \
  64.     (fprintf(m_termout,"%c%c",m_escchar,E_ADDCHAR)_m_flsh)
  65.  
  66. #define m_addchars(n) \
  67.     (fprintf(m_termout,"%c%d%c",m_escchar,n,E_ADDCHAR)_m_flsh)
  68.  
  69. #define m_deleteline() \
  70.     (fprintf(m_termout,"%c%c",m_escchar,E_DELETELINE)_m_flsh)
  71.  
  72. #define m_deletelines(n) \
  73.     (fprintf(m_termout,"%c%d%c",m_escchar,n,E_DELETELINE)_m_flsh)
  74.  
  75. #define m_deletechar() \
  76.     (fprintf(m_termout,"%c%c",m_escchar,E_DELETECHAR)_m_flsh)
  77.  
  78. #define m_deletechars(n) \
  79.     (fprintf(m_termout,"%c%d%c",m_escchar,n,E_DELETECHAR)_m_flsh)
  80.  
  81. #define m_standend() \
  82.     (fprintf(m_termout,"%c%c",m_escchar,E_STANDEND)_m_flsh)
  83.  
  84. #define m_standout() \
  85.     (fprintf(m_termout,"%c%c",m_escchar,E_STANDOUT)_m_flsh)
  86.  
  87. #define m_bell() \
  88.     (fprintf(m_termout,"\007")_m_flsh)
  89.  
  90. #define m_setcursor(n) \
  91.     (fprintf(m_termout,"%c%d%c",m_escchar,n,E_SETCURSOR)_m_flsh)
  92.  
  93. /* lines */
  94.  
  95. /*
  96. #define m_line(x0,y0,x1,y1) \
  97.     (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar, \
  98.     LIMIT(x0),LIMIT(y0),LIMIT(x1),LIMIT(y1),E_LINE)_m_flsh)
  99. */
  100.  
  101. #define m_line(x0,y0,x1,y1) \
  102.     (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar, \
  103.     x0,y0,x1,y1,E_LINE)_m_flsh)
  104.  
  105. #define m_lineto(to,x0,y0,x1,y1) \
  106.     (fprintf(m_termout,"%c%d,%d,%d,%d,%d%c",m_escchar, \
  107.     x0,y0,x1,y1,to,E_LINE)_m_flsh)
  108.  
  109. #define m_draw(x,y) \
  110.     (fprintf(m_termout,"%c%d,%d%c",m_escchar, \
  111.     LIMIT(x),LIMIT(y),E_LINE)_m_flsh)
  112.  
  113. #define m_fastdraw(x,y,count,buff) \
  114.     (fprintf(m_termout,"%c%d,%d,%d%c",m_escchar, \
  115.     LIMIT(x),LIMIT(y),count,E_GRUNCH), \
  116.     fwrite(buff,1,count,m_termout)_m_flsh)
  117.  
  118. #define m_rfastdraw(count,buff) \
  119.     (fprintf(m_termout,"%c%d%c",m_escchar, \
  120.     count,E_GRUNCH), \
  121.     fwrite(buff,1,count,m_termout)_m_flsh)
  122.  
  123. #define m_aligntext() \
  124.     (fprintf(m_termout,"%c%c",m_escchar, \
  125.     E_LINE)_m_flsh)
  126.  
  127. #define m_gotext() \
  128.     (fprintf(m_termout,"%c%c",m_escchar, \
  129.     E_GO)_m_flsh)
  130.  
  131. #define m_go(x,y) \
  132.     (fprintf(m_termout,"%c%d,%d%c",m_escchar, \
  133.     LIMIT(x),LIMIT(y),E_GO)_m_flsh)
  134.  
  135. /* bitblits */
  136.  
  137. #define m_clear() \
  138.     (fprintf(m_termout,"%c",C_FF)_m_flsh)
  139.  
  140. #define m_func(func)\
  141.     (fprintf(m_termout,"%c%d%c",m_escchar,func,E_BITBLT)_m_flsh)
  142.  
  143. #define m_bitwrite(x,y,w,h) \
  144.     (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar,x,y,w,h,E_BITBLT)_m_flsh)
  145.  
  146. #define m_bitwriteto(x,y,w,h,to) \
  147.     (fprintf(m_termout,"%c%d,%d,%d,%d,%d%c", \
  148.     m_escchar,x,y,w,h,to,E_BITBLT)_m_flsh)
  149.  
  150. #define m_bitcopy(xd,yd,w,h,xs,ys) \
  151.     (fprintf(m_termout,"%c%d,%d,%d,%d,%d,%d%c", \
  152.     m_escchar,xd,yd,w,h,xs,ys,E_BITBLT)_m_flsh)
  153.  
  154. #define m_bitcopyto(xd,yd,w,h,xs,ys,to,from) \
  155.     (fprintf(m_termout,"%c%d,%d,%d,%d,%d,%d,%d,%d%c", \
  156.     m_escchar,xd,yd,w,h,xs,ys,to,from,E_BITBLT)_m_flsh)
  157.  
  158. #define m_bitld(w,h,x,y,size) \
  159.     (fprintf(m_termout,"%c%d,%d,%d,%d,%d%c",\
  160.     m_escchar,w,h,x,y,size,E_BITLOAD),m_flush())
  161.  
  162. #define m_bitldto(w,h,x,y,to,size) \
  163.     (fprintf(m_termout,"%c%d,%d,%d,%d,%d,%d%c",\
  164.     m_escchar,w,h,x,y,to,size,E_BITLOAD),m_flush())
  165.  
  166. #define m_bitdestroy(n) \
  167.     (fprintf(m_termout,"%c%d%c",\
  168.     m_escchar,n,E_BITCRT),m_flush())
  169.  
  170. #define m_bitcreate(n,w,h) \
  171.     (fprintf(m_termout,"%c%d,%d,%d%c",\
  172.     m_escchar,n,w,h,E_BITCRT),m_flush())
  173.  
  174. #define m_bitget(from,size,offset) \
  175.     (fprintf(m_termout,"%c%d,%d,%d%c",\
  176.     m_escchar,from,size,offset,E_BITGET),m_flush())
  177.  
  178. #define m_othersave(id,sub,name) \
  179.     (fprintf(m_termout,"%c%d,%d,%d%c%s",\
  180.     m_escchar,id,sub,strlen(name),E_SMAP,name)_m_flsh)
  181.  
  182. #define m_windowsave(name) \
  183.     (fprintf(m_termout,"%c%d%c%s",\
  184.     m_escchar,strlen(name),E_SMAP,name)_m_flsh)
  185.  
  186. #define m_bitsave(from,name) \
  187.     (fprintf(m_termout,"%c%d,%d%c%s",\
  188.     m_escchar,from,strlen(name),E_SMAP,name)_m_flsh)
  189.  
  190. #define m_bitfromfile(to,name) \
  191.     (fprintf(m_termout,"%c%d,%d%c%s",\
  192.     m_escchar,to,strlen(name),E_GMAP,name)_m_flsh)
  193.  
  194. #define m_highlight(x,y,w,h) \
  195.     (fprintf(m_termout,"%c%d,%d,%d,%d%c",\
  196.     m_escchar,x,y,w,h,E_BLEEP),m_flush())
  197.  
  198. #define m_stringto(to,x,y,text) \
  199.     (fprintf(m_termout,"%c%d,%d,%d,%d%c%s",\
  200.     m_escchar,to,x,y,strlen(text),E_STRING,text)_m_flsh)
  201.  
  202. /* other graphic functions */
  203.  
  204. #define m_circle(x,y,r) \
  205.     (fprintf(m_termout,"%c%d,%d,%d%c",m_escchar, \
  206.     LIMIT(x),LIMIT(y),LIMIT(r),E_CIRCLE)_m_flsh)
  207.  
  208. #define m_ellipse(x,y,r1,r2) \
  209.     (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar, \
  210.     LIMIT(x),LIMIT(y),LIMIT(r1),LIMIT(r2),E_CIRCLE)_m_flsh)
  211.  
  212. #define m_arc(x,y,x1,y1,x2,y2) \
  213.     (fprintf(m_termout,"%c%d,%d,%d,%d,%d,%d%c",m_escchar, \
  214.     LIMIT(x),LIMIT(y),LIMIT(x1),LIMIT(y1),LIMIT(x2),LIMIT(y2), \
  215.     E_CIRCLE)_m_flsh)
  216.  
  217. #define m_ellipseto(to,x,y,r1,r2) \
  218.     (fprintf(m_termout,"%c%d,%d,%d,%d,%d%c",m_escchar, \
  219.     LIMIT(x),LIMIT(y),LIMIT(r1),LIMIT(r2),to,E_CIRCLE)_m_flsh)
  220.  
  221. #define m_rcircle(r) \
  222.     (fprintf(m_termout,"%c%d%c",m_escchar, \
  223.     LIMIT(r),E_CIRCLE)_m_flsh)
  224.  
  225. #define m_rellipse(r1,r2) \
  226.     (fprintf(m_termout,"%c%d,%d%c",m_escchar, \
  227.     LIMIT(r1),LIMIT(r2),E_CIRCLE)_m_flsh)
  228.  
  229.  
  230. #define m_movemouse(x,y) \
  231.     (fprintf(m_termout,"%c%d,%d%c",m_escchar,x,y,E_MOUSE)_m_flsh)
  232.  
  233. #define m_movecursor(x,y) \
  234.     (fprintf(m_termout,"%c%d,%d%c",m_escchar,x,y,E_MOVE)_m_flsh)
  235.  
  236. #define m_move(col,row) \
  237.     (fprintf(m_termout,"%c%d,%d%c",m_escchar,col,row,E_CUP)_m_flsh)
  238.  
  239. #define m_moveprint(x,y,str) \
  240.     (fprintf(m_termout,"%c%d,%d%c%s",m_escchar,x,y,E_MOVE,str)_m_flsh)
  241.  
  242. #define m_incr(x) \
  243.     (fprintf(m_termout,"%c%d%c",m_escchar,x,E_MOVE)_m_flsh)
  244.  
  245. #define m_cleareol() \
  246.     (fprintf(m_termout,"%c%c",m_escchar,E_CLEAREOL)_m_flsh)
  247.  
  248. #define m_cleareos() \
  249.     (fprintf(m_termout,"%c%c",m_escchar,E_CLEAREOS)_m_flsh)
  250.  
  251. /* window manipulation */
  252.  
  253. #define m_movewindow(x,y) \
  254.     (fprintf(m_termout,"%c%d,%d%c",m_escchar,x,y,E_SHAPE)_m_flsh)
  255.  
  256. #define m_shapewindow(x,y,dx,dy) \
  257.     (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar,x,y,dx,dy,E_SHAPE)_m_flsh)
  258.  
  259. #define m_font(x) \
  260.     (fprintf(m_termout,"%c%d%c",m_escchar,x,E_FONT)_m_flsh)
  261.  
  262. #define m_loadfont(n,name) \
  263.     (fprintf(m_termout,"%c%d,%d%c%s", \
  264.     m_escchar,n,strlen(name),E_FONT,name)_m_flsh)
  265.  
  266. #define m_size(cols,rows) \
  267.     (fprintf(m_termout,"%c%d,%d%c",m_escchar,cols,rows,E_SIZE)_m_flsh)
  268.  
  269. #define m_sizeall(x,y,cols,rows) \
  270.     (fprintf(m_termout,"%c%d,%d,%d,%d%c", \
  271.          m_escchar,x,y,cols,rows,E_SIZE)_m_flsh)
  272.  
  273. #define m_scrollregion(first,last) \
  274.     (fprintf(m_termout,"%c%d,%d%c", \
  275.     m_escchar,first,last,E_TEXTREGION)_m_flsh)
  276.  
  277. #define m_textregion(x,y,wide,high) \
  278.     (fprintf(m_termout,"%c%d,%d,%d,%d%c", \
  279.     m_escchar,x,y,wide,high,E_TEXTREGION)_m_flsh)
  280.  
  281. #define m_textreset() \
  282.     (fprintf(m_termout,"%c%c",m_escchar,E_TEXTREGION)_m_flsh)
  283.  
  284. /* window creation/ destruction */
  285.  
  286. #define m_newwin(x,y,w,h) \
  287.     (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar,x,y,w,h,E_MAKEWIN)_m_flsh)
  288.  
  289. #define m_destroywin(n) \
  290.     (fprintf(m_termout,"%c%d,0%c",m_escchar,n,E_MAKEWIN)_m_flsh)
  291.  
  292. #define m_selectwin(n) \
  293.     (fprintf(m_termout,"%c%d%c",m_escchar,n,E_MAKEWIN)_m_flsh)
  294.  
  295. /* events */
  296.  
  297. #define m_setevent(event,x) \
  298.     (fprintf(m_termout,"%c%d,%d%c%s", \
  299.     m_escchar,_mapevent(event),strlen(x),E_EVENT,x)_m_flsh)
  300.  
  301. #define m_clearevent(event) \
  302.     (fprintf(m_termout,"%c%d%c", \
  303.     m_escchar,_mapevent(event),E_EVENT)_m_flsh)
  304.  
  305. /* message passing */
  306.  
  307. #define m_sendme(str) \
  308.     (fprintf(m_termout,"%c%d%c%s", \
  309.     m_escchar,strlen(str),E_GIMME,str)_m_flsh)
  310.  
  311. #define m_sendto(pid,str) \
  312.     (fprintf(m_termout,"%c%d,%d%c%s", \
  313.     m_escchar,pid,strlen(str),E_SEND,str)_m_flsh)
  314.  
  315. #define m_broadcast(str) \
  316.     (fprintf(m_termout,"%c%d%c%s", \
  317.     m_escchar,strlen(str),E_SEND,str)_m_flsh)
  318.  
  319. #define m_snarf(str) \
  320.     (fprintf(m_termout,"%c%d%c%s", \
  321.     m_escchar,strlen(str),E_SNARF,str)_m_flsh)
  322.  
  323. #define m_put() \
  324.     (fprintf(m_termout,"%c%c", \
  325.     m_escchar,E_PUTSNARF)_m_flsh)
  326.  
  327. /* environment stacking */
  328.  
  329. #define m_push(mode) \
  330.     (m_envcount++, \
  331.          fprintf(m_termout,"%c%d%c",m_escchar,(mode)|P_CLEAR,E_PUSH) \
  332.          _m_flsh)
  333.  
  334. #define m_pushsave(mode) \
  335.     (m_envcount++, \
  336.     fprintf(m_termout,"%c%d%c",m_escchar,(mode),E_PUSH)_m_flsh)
  337.  
  338. #define m_pop() \
  339.     (m_envcount?m_envcount--:0, \
  340.          fprintf(m_termout,"%c%c",m_escchar,E_POP)_m_flsh)
  341.  
  342. #define m_popall() \
  343.     while(m_envcount--) \
  344.          (fprintf(m_termout,"%c%c",m_escchar,E_POP)_m_flsh)
  345.  
  346. /* tty mode settings */
  347.  
  348. #define m_setraw() \
  349.     m_setflags(RAW)
  350.  
  351. #define m_setnoraw() \
  352.     m_resetflags(RAW)
  353. #define m_unsetraw    m_setnoraw        /* obsolete */
  354.  
  355. #define m_setecho()     \
  356.         m_setflags(ECHO)
  357.  
  358. #define m_setnoecho() \
  359.         m_resetflags(ECHO)
  360.  
  361. /* other stuff */
  362.  
  363. #define m_setmode(mode) \
  364.     (fprintf(m_termout,"%c%d%c",m_escchar,mode,E_SETMODE)_m_flsh)
  365.  
  366. #define m_dupkey(key) \
  367.     (fprintf(m_termout,"%c%d,%d%c",m_escchar,M_DUPKEY,key,E_SETMODE)_m_flsh)
  368.  
  369. #define m_clearmode(mode) \
  370.     (fprintf(m_termout,"%c%d%c",m_escchar,mode,E_CLEARMODE)_m_flsh)
  371.  
  372. #define m_getinfo(x) \
  373.     (fprintf(m_termout,"%c%d%c",m_escchar,x,E_GETINFO),m_flush())
  374.  
  375. #define m_whatsat(x,y) \
  376.     (fprintf(m_termout,"%c%d,%d%c",m_escchar,x,y,E_GETINFO),m_flush())
  377.  
  378. #define m_get()\
  379.     (m_flush(),fgets(m_linebuf,sizeof(m_linebuf),m_termin))
  380.  
  381. #define m_getchar()\
  382.     (getc(m_termin))
  383.  
  384. #define m_gets(buff)\
  385.     (m_flush(),fgets(buff,sizeof(buff),m_termin))
  386.  
  387. #define m_putchar(c) \
  388.     (putc(c,m_termout)_m_flsh)
  389.  
  390. #define m_printstr(str) \
  391.     (fprintf(m_termout,"%s",str)_m_flsh)
  392.  
  393. #define m_setesc(x) \
  394.     (m_escchar = (x))
  395.  
  396. #define m_resetesc() \
  397.     (m_escchar = ESC)
  398.  
  399. #define m_sleep() \
  400.     (fprintf(m_termout,"%c%c",m_escchar,E_NULL)_m_flsh)
  401.  
  402. /* menu stuff */
  403.  
  404. #ifndef M_DELIM
  405. #define M_DELIM    '\005'        /* menu delimiter character */
  406. #endif
  407.  
  408. #define m_selectmenu(n) \
  409.     (fprintf(m_termout,"%c%d%c",m_escchar,n,E_MENU)_m_flsh)
  410.  
  411. #define m_selectmenu2(n) \
  412.     (fprintf(m_termout,"%c-%d%c",m_escchar,n,E_MENU)_m_flsh)
  413.  
  414. #define m_nomenu() \
  415.     (fprintf(m_termout,"%c%d%c",m_escchar,999,E_MENU)_m_flsh)
  416.  
  417. #define m_nomenu2() \
  418.     (fprintf(m_termout,"%c-%d%c",m_escchar,999,E_MENU)_m_flsh)
  419.  
  420. #define m_loadmenu(n,str) \
  421.     (fprintf(m_termout,"%c%d,%d%c%s",m_escchar,n,strlen(str),E_MENU,str)_m_flsh)
  422.  
  423. #define m_clearmenu(n) \
  424.     (fprintf(m_termout,"%c%d,0%c",m_escchar,n,E_MENU)_m_flsh)
  425.  
  426. #define m_linkmenu(parent,item,child,flags) \
  427.     (fprintf(m_termout,"%c%d,%d,%d,%d%c", \
  428.     m_escchar,parent,item,child,flags,E_MENU)_m_flsh)
  429.  
  430. #define m_unlinkmenu(parent,item) \
  431.     (fprintf(m_termout,"%c%d,%d,%d,%c", \
  432.     m_escchar,parent,item,-1,E_MENU)_m_flsh)
  433.  
  434. #define m_pagemenu(parent,child) \
  435.     (fprintf(m_termout,"%c%d,%d,%d,%c", \
  436.     m_escchar,parent,-1,child,E_MENU)_m_flsh)
  437.  
  438. #define m_unpagemenu(parent) \
  439.     (fprintf(m_termout,"%c%d,%d,%d,%c", \
  440.     m_escchar,parent,-1,-1,E_MENU)_m_flsh)
  441.  
  442. /* temporary menu stuff */
  443.  
  444. #define m_menuitem(menu,item) \
  445.     (fprintf(m_termout,"%c%d,%d%c",m_escchar,menu,item,E_FOO)_m_flsh)
  446.  
  447. #define m_menuerase(menu) \
  448.     (fprintf(m_termout,"%c%d%c",m_escchar,menu,E_FOO)_m_flsh)
  449.  
  450. #define m_menushow(x,y,menu) \
  451.     (fprintf(m_termout,"%c%d,%d,%d%c",m_escchar,x,y,menu,E_FOO)_m_flsh)
  452.  
  453. #define m_menubar(x,y,menu,item) \
  454.     (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar,x,y,menu,item,E_FOO)_m_flsh)
  455.  
  456. /* temporary relative character motion */
  457.  
  458. #define m_right(tenths) \
  459.     (fprintf(m_termout,"%c%d,%d%c",m_escchar,tenths,10,E_RIGHT)_m_flsh)
  460.  
  461. #define m_left(tenths) \
  462.     (fprintf(m_termout,"%c%d,%d%c",m_escchar,tenths,-10,E_RIGHT)_m_flsh)
  463.  
  464. #define m_up(tenths) \
  465.     (fprintf(m_termout,"%c%d,%d%c",m_escchar,tenths,10,E_UP)_m_flsh)
  466.  
  467. #define m_down(tenths) \
  468.     (fprintf(m_termout,"%c%d,%d%c",m_escchar,tenths,10,E_DOWN)_m_flsh)
  469.  
  470. /* color stuff */
  471.  
  472. #define m_fcolor(color) \
  473.         (fprintf(m_termout,"%c%d%c",m_escchar,color,E_FCOLOR)_m_flsh)
  474. #define m_bcolor(color) \
  475.         (fprintf(m_termout,"%c%d%c",m_escchar,color,E_BCOLOR)_m_flsh)
  476. #define m_linecolor(op,color) \
  477.         (fprintf(m_termout,"%c%d,%d%c",m_escchar,op,color,E_BITBLT)_m_flsh)
  478.  
  479. #define _mapevent(z)                ((z)==3||(z)==4?2-(z):z)
  480.  
  481. /* events */
  482.  
  483. #define BUTTON_1        1        /* end button depressed */
  484. #define BUTTON_2        2        /* middle button depressed */
  485. #define BUTTON_1U        3        /* end button released */
  486. #define BUTTON_2U        4        /* middle button released */
  487. #define RESHAPE            5        /* window was reshaped */
  488. #define RESHAPED        5        /* window was reshaped */
  489. #define REDRAW            6        /* screen was redrawn */
  490. #define REDRAWN            6        /* screen was redrawn */
  491. #define ACTIVATE        7        /* window was activated */
  492. #define ACTIVATED        7        /* window was activated */
  493. #define DEACTIVATE        8        /* window was deactivated */
  494. #define DEACTIVATED        8        /* window was deactivated */
  495. #define COVERED            9        /* window was covered */
  496. #define UNCOVERED        10        /* window was uncovered */
  497. #define MOVE            11        /* window was moved */
  498. #define MOVED            11        /* window was moved */
  499. #define DESTROY            12        /* window was destroyed */
  500. #define ACCEPT            13        /* accept messages */
  501. #define NOTIFY            14        /* set notification */
  502. #define SNARFED            16        /* text was just snarfed */
  503. #define PASTE            17        /* text was just pasted */
  504.  
  505. /* stuff for setting terminal modes */
  506.  
  507. #define _m_ttyset()        (m_flags&M_MODEOK?m_flags:m_ttyset())
  508. #define _m_ttyreset()        (m_flags&M_MODEOK?m_flags:m_ttyreset())
  509.  
  510. /* global variables */
  511.  
  512. #define MAXLINE        256    /* maximum line size from mgr */
  513.  
  514. extern FILE *m_termin;        /* output to window */
  515. extern FILE *m_termout;        /* input from mgr */
  516. extern int m_flags;        /* setup flags */
  517. extern int m_envcount;        /* # of stacked environments */
  518. extern int m_saveenvcount;    /* ??? */
  519. extern char m_escchar;        /* \033, change only for debugging */
  520. extern char m_menuchar;        /* menu field seperator char (\005) */
  521. extern char m_linebuf[MAXLINE];
  522.  
  523. extern int get_info(), get_size(), parse(), get_font(), is_active(), menu_load();
  524. extern char *m_lastline(), *get_termcap();
  525.  
  526. /* structure definitions */
  527.  
  528. #define MENU_SIZE(x)    (sizeof(x)/sizeof(struct menu_entry))
  529.  
  530. struct menu_entry {
  531.    char *value;        /* this appears in the menu */
  532.    char *action;    /* this gets sent by mgr upon selection */
  533.    };
  534.  
  535. struct window_data {
  536.    int x,y;        /* origin */
  537.    int w,h;        /* width, height */
  538.    char tty[3];        /* name of controlling tty */
  539.    char status;        /* activation status */
  540.    int num;        /* window number (>0 for client) */
  541.    int setid;        /* window set ID */
  542.    };
  543.  
  544. struct icon {
  545.    char *name;        /* name of icon */
  546.    int type;        /* always 1 */
  547.    int w;        /* bitmap width */
  548.    int h;        /* bitmap height */
  549.    unsigned char *data;    /* data goes here */
  550.    };
  551.  
  552. #endif _TERM_INCL
  553.